package com.sprouting.ops.model;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.sprouting.ops.annotations.invoke.CheckLength;
import com.sprouting.ops.annotations.invoke.CheckNotNull;
import com.sprouting.ops.annotations.invoke.CheckIsNullOrEmpty;
import com.sprouting.ops.interfaces.AddGroup;
import com.sprouting.ops.interfaces.UpdGroup;
import com.sprouting.ops.model.qo.BaseQuery;
import lombok.Data;

import javax.validation.constraints.NotNull;

/**
 * 常用文件和文件夹
 *
 * @author ：LX（长沙麓谷）
 * @date 创建时间： 2025/3/24 17:43
 */
@TableName("ops_common_use")
@Data
public class OpsCommonUse extends BaseModel {

    /**
     * 主键
     */
    @CheckNotNull(message = "非法ID", groups = UpdGroup.class)
    @CheckIsNullOrEmpty(message = "无效ID", groups = AddGroup.class)
    @TableId
    private String id;
    /**
     * 类型-绑定类型
     * 对应表名
     */
    @CheckNotNull(message = "请选择类型")
    private String type;
    /**
     * 绑定ID-表的id
     */
    @CheckNotNull(message = "绑定信息不能为空")
    private String bindId;
    /**
     * 上级id,顶层为-1
     * @see com.sprouting.ops.interfaces.ConstantBase.DefaultValue#STRING 顶层
     */
    @CheckNotNull(message = "上级不能为空")
    private String parentId;
    /**
     * 全部上级，不含-1
     * @see OpsCommonUse#getId()
     */
    private String parentIds;
    /**
     * 是否文件夹
     * @see com.sprouting.ops.interfaces.ConstantBase.YesOrNo#YES 是文件夹
     * @see com.sprouting.ops.interfaces.ConstantBase.YesOrNo#NO 否
     */
    @NotNull(message = "请选择是否文件")
    private Integer folder;
    /**
     * 名称
     */
    @CheckLength(min = 1, max = 150, message = "名称超过长度限制")
    @CheckNotNull(message = "请输入名称")
    private String name;
    /**
     * 是否保密文件，只有文件有
     * 不使用秘密等级，没必要，能流出来的最多是秘密级别的，啥绝密什么的别想了
     * @see com.sprouting.ops.interfaces.ConstantBase.YesOrNo#YES 是保密文件
     * @see com.sprouting.ops.interfaces.ConstantBase.YesOrNo#NO 非保密文件
     */
    private Integer secrecy;
    /**
     * 是否重要文件
     * @see com.sprouting.ops.interfaces.ConstantBase.YesOrNo#YES 是重要文件
     * @see com.sprouting.ops.interfaces.ConstantBase.YesOrNo#NO 非重要文件
     */
    private Integer core;
    /**
     * 文件id
     * @see DromaraFileStorage#getId()
     */
    private String fileId;
}
